struct Mesh {
  /* @offset(0) */
  world : mat4x4<f32>,
  /* @offset(64) */
  visibility : f32,
}

struct Scene {
  /* @offset(0) */
  viewProjection : mat4x4<f32>,
  /* @offset(64) */
  view : mat4x4<f32>,
  /* @offset(128) */
  projection : mat4x4<f32>,
  /* @offset(192) */
  vEyePosition : vec4<f32>,
}

struct LeftOver {
  /* @offset(0) */
  diffuseMatrix : mat4x4<f32>,
  /* @offset(64) */
  biasAndScaleSM : vec3<f32>,
  /* @offset(80) */
  depthValuesSM : vec2<f32>,
  /* @offset(88) */
  softTransparentShadowSM : f32,
}

struct Internals {
  /* @offset(0) */
  yFactor_ : f32,
  /* @offset(4) */
  textureOutputHeight_ : f32,
}

var<private> position_1 : vec3<f32>;

var<private> uv : vec2<f32>;

@group(1) @binding(1) var<uniform> x_25 : Mesh;

@group(0) @binding(0) var<uniform> x_49 : Scene;

var<private> vDepthMetricSM : f32;

@group(1) @binding(4) var<uniform> x_63 : LeftOver;

var<private> vUV : vec2<f32>;

@group(1) @binding(0) var<uniform> x_92 : Internals;

var<private> gl_Position : vec4<f32>;

fn main_1() {
  var positionUpdated : vec3<f32>;
  var uvUpdated : vec2<f32>;
  var finalWorld : mat4x4<f32>;
  var worldPos : vec4<f32>;
  let x_12 : vec3<f32> = position_1;
  positionUpdated = x_12;
  let x_18 : vec2<f32> = uv;
  uvUpdated = x_18;
  let x_30 : mat4x4<f32> = x_25.world;
  finalWorld = x_30;
  let x_33 : mat4x4<f32> = finalWorld;
  let x_34 : vec3<f32> = positionUpdated;
  worldPos = (x_33 * vec4<f32>(x_34.x, x_34.y, x_34.z, 1.0f));
  let x_51 : mat4x4<f32> = x_49.viewProjection;
  let x_52 : vec4<f32> = worldPos;
  gl_Position = (x_51 * x_52);
  let x_60 : f32 = gl_Position.z;
  let x_68 : f32 = x_63.depthValuesSM.x;
  let x_71 : f32 = x_63.depthValuesSM.y;
  let x_75 : f32 = x_63.biasAndScaleSM.x;
  vDepthMetricSM = (((x_60 + x_68) / x_71) + x_75);
  let x_80 : mat4x4<f32> = x_63.diffuseMatrix;
  let x_81 : vec2<f32> = uvUpdated;
  let x_86 : vec4<f32> = (x_80 * vec4<f32>(x_81.x, x_81.y, 1.0f, 0.0f));
  vUV = vec2<f32>(x_86.x, x_86.y);
  let x_94 : f32 = x_92.yFactor_;
  let x_96 : f32 = gl_Position.y;
  gl_Position.y = (x_96 * x_94);
  return;
}

struct main_out {
  @builtin(position)
  gl_Position : vec4<f32>,
  @location(1)
  vDepthMetricSM_1 : f32,
  @location(0)
  vUV_1 : vec2<f32>,
}

@vertex
fn main(@location(0) position_1_param : vec3<f32>, @location(1) uv_param : vec2<f32>) -> main_out {
  position_1 = position_1_param;
  uv = uv_param;
  main_1();
  return main_out(gl_Position, vDepthMetricSM, vUV);
}